// MarkdownPreviewPanel.java
package com.ren.frame;

import javax.swing.*;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet;

/**
 * Markdown预览面板
 * 用于显示Markdown内容的渲染结果
 */
public class MarkdownPreviewPanel extends JPanel {

    private JEditorPane previewPane;

    public MarkdownPreviewPanel() {
        initializePreviewPanel();
    }

    /**
     * 初始化预览面板
     */
    private void initializePreviewPanel() {
        setLayout(new java.awt.BorderLayout());

        previewPane = new JEditorPane();
        previewPane.setEditable(false);
        previewPane.setContentType("text/html");

        // 设置HTML编辑器
        HTMLEditorKit editorKit = new HTMLEditorKit();
        previewPane.setEditorKit(editorKit);

        // 添加基本样式
        StyleSheet styleSheet = editorKit.getStyleSheet();
        styleSheet.addRule("body { font-family: '微软雅黑', sans-serif; font-size: 14px; }");
        styleSheet.addRule("h1, h2, h3 { color: #333; }");
        styleSheet.addRule("li { margin-bottom: 5px; }");
        styleSheet.addRule("del { color: #999; }");

        JScrollPane scrollPane = new JScrollPane(previewPane);
        add(scrollPane, java.awt.BorderLayout.CENTER);
    }

    /**
     * 设置要预览的Markdown内容
     * @param markdownContent Markdown格式的内容
     */
    public void setMarkdownContent(String markdownContent) {
        // 这里需要将Markdown转换为HTML，实际项目中应使用Markdown处理器
        String htmlContent = convertMarkdownToHtml(markdownContent);
        previewPane.setText(htmlContent);
    }

    /**
     * 简单的Markdown到HTML转换（实际项目中应使用专业库）
     * @param markdown Markdown内容
     * @return HTML内容
     */
    private String convertMarkdownToHtml(String markdown) {
        // 这是一个简化的转换，实际应使用flexmark-java等库
        StringBuilder html = new StringBuilder();
        html.append("<html><body>");

        String[] lines = markdown.split("\n");
        boolean inList = false;

        for (String line : lines) {
            if (line.matches("\\d+\\.\\s.*")) {
                if (!inList) {
                    html.append("<ol>");
                    inList = true;
                }
                String content = line.substring(line.indexOf(". ") + 2);
                // 处理删除线
                content = content.replaceAll("~~(.*?)~~", "<del>$1</del>");
                html.append("<li>").append(content).append("</li>");
            } else {
                if (inList) {
                    html.append("</ol>");
                    inList = false;
                }
                if (!line.trim().isEmpty()) {
                    html.append("<p>").append(line).append("</p>");
                }
            }
        }

        if (inList) {
            html.append("</ol>");
        }

        html.append("</body></html>");
        return html.toString();
    }
}
